package tool

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
)

/*
	存储一切全局参数，供其他模块使用
	一些参数也可以通过 用户根据 tool.json来配置
*/

type GlobalObj struct {
	SshIp               string //ssh暴力破解的ip
	Log4jIp             string //log4j漏洞利用的ip
	SshContainerId      string //ssh的容器id
	NmapIp              string //nmap要扫描的主机
	HostPackageCount    int    //主机安装包
	HostServerCount     int    //主机web服务
	ImageConfigCount    int    //主机镜像数量
	HostCmdHistoryCount int    //主机命令历史

}

var GlobalObject *GlobalObj

func (g *GlobalObj) Reload() {
	data, err := ioutil.ReadFile("conf/stress.json")
	if err != nil {
		panic(err)
	}
	//将json数据解析到struct中
	fmt.Printf("json:%s\n", data)
	err = json.Unmarshal(data, &GlobalObject)
	if err != nil {
		panic(err)
	}

}

func init() {
	//初始化GlobalObject变量，设置一些默认值
	GlobalObject = &GlobalObj{
		HostPackageCount:    300,
		HostServerCount:     14,
		HostCmdHistoryCount: 300,
		ImageConfigCount:    155,
	}

	//从配置文件中加载一些用户配置的参数
	GlobalObject.Reload()
}
